package com.starry.module.system.core.tenant.mapper;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.db.core.mapper.BaseMapperX;
import com.starry.db.core.query.LambdaQueryWrapperX;
import com.starry.module.system.api.tenant.domain.qo.SysTenantPackagePageQo;
import com.starry.module.system.core.tenant.entity.SysTenantPackage;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 系统租户套餐-数据库服务层
 *
 * @author xiaoke
 */
@Mapper
public interface SysTenantPackageMapper extends BaseMapperX<SysTenantPackage> {

    /**
     * 分页查询
     *
     * @param pageQo 分页参数
     * @return PageVo<SysTenantPackage>
     */
    default PageVo<SysTenantPackage> selectPage(SysTenantPackagePageQo pageQo) {
        return selectPage(pageQo, new LambdaQueryWrapperX<SysTenantPackage>()
                .likeIfPresent(SysTenantPackage::getName, pageQo.getName())
                .eqIfPresent(SysTenantPackage::getStatus, pageQo.getStatus())
                .orderByDesc(SysTenantPackage::getCreateTime)
        );
    }

    /**
     * 查询列表
     *
     * @param pageQo 分页参数
     * @return List<SysPost>
     */
    default List<SysTenantPackage> selectList(SysTenantPackagePageQo pageQo) {
        return selectList(new LambdaQueryWrapperX<SysTenantPackage>()
                .eqIfPresent(SysTenantPackage::getStatus, pageQo.getStatus())
                .likeIfPresent(SysTenantPackage::getName, pageQo.getName())
                .orderByDesc(SysTenantPackage::getCreateTime)
        );
    }
}

